def paper_folding(n):
    """
    请把一段纸条竖着放在桌子上，然后从纸条的下边向上方对折1次，压出折痕后展开。此时 折痕是凹下去的，即折
    痕突起的方向指向纸条的背面。如果从纸条的下边向上方连续对折2 次，压出折痕后展开，此时有三条折痕，从上
    到下依次是下折痕、下折痕和上折痕。给定一个输入参数N，代表纸条都从下边向上方连续对折N次，请从上到下打
    印所有折痕的方向 例如：N=1时，打印： down；N=2时，打印： down down up

    通过折纸操作发现，最后打印的结果应该是一个左子树全部为凹，右子树全部为凸的二叉树结构，最后通过中序遍历进行打印
    :param n:
    :return:
    """
    if n == 1:
        print("down")
    paper(n, 1, True)


def paper(n, k, dowm):
    if k > n:
        return
    paper(n, k+1, True)
    print("dowm" if dowm else "up")
    paper(n, k + 1, False)


if __name__ == "__main__":
    paper_folding(3)
